package org.example.erat.service;

import org.example.erat.dto.ExperimentDTO;

import java.util.List;

/**
 * 实验服务接口
 */
public interface ExperimentService {

    /**
     * 创建实验
     * @param experimentDTO 实验DTO
     * @return 创建后的实验DTO
     */
    ExperimentDTO createExperiment(ExperimentDTO experimentDTO);

    /**
     * 更新实验
     * @param id 实验ID
     * @param experimentDTO 实验DTO
     * @return 更新后的实验DTO
     */
    ExperimentDTO updateExperiment(Long id, ExperimentDTO experimentDTO);

    /**
     * 删除实验
     * @param id 实验ID
     */
    void deleteExperiment(Long id);

    /**
     * 获取实验
     * @param id 实验ID
     * @return 实验DTO
     */
    ExperimentDTO getExperiment(Long id);

    /**
     * 获取所有实验
     * @return 实验DTO列表
     */
    List<ExperimentDTO> getAllExperiments();

    /**
     * 根据课程ID获取实验列表
     * @param courseId 课程ID
     * @return 实验DTO列表
     */
    List<ExperimentDTO> getExperimentsByCourse(Long courseId);

    /**
     * 批量创建实验
     * @param courseId 课程ID
     * @param count 实验数量
     * @return 创建的实验DTO列表
     */
    List<ExperimentDTO> batchCreateExperiments(Long courseId, int count);
}
